// Generator 函数  

// Generator 函数是 ES6 提供的一种异步编程解决方案
// function * foo(){
//     console.log('aaa')
//     return 100
// }
// const result = foo()
// console.log(result) // Object [Generator] {}
// console.log(result.next()) // aaa  { value: 100, done: true }


function * foo(){
    console.log('aaa')
    yield 100 // yield不会结束函数方法
    console.log('bbb')
    yield 110 // yield不会结束函数方法
    console.log('ccc')
    yield 120 // yield不会结束函数方法
}
// 每次调用next方法，遇到yield后就会被暂停， 并将yield的值作为value， 返回一个对象，周而复始
// 当next 中返回对象的done为true的时候，代表执行结束
// 最大的特点就是惰性执行， 每执行一次next方法，程序才往下走
const generator = foo()
console.log(generator.next()) // aaa { value: 100, done: false }
console.log(generator.next()) // bbb { value: 110, done: false }
console.log(generator.next()) // ccc { value: 120, done: false }